1. Field of the Invention
The present invention relates generally to integrated circuit memory products, and, more particularly, to circuitry for programming antifuse bits in such products.
2. Description of the Prior Art
Contemporary memory products, e.g. DRAMs, require a high degree of redundancy in order to improve manufacturing yields. Present redundancy techniques in such memory products include providing extra memory array columns and/or extra memory array rows which can be used to replace defective columns and/or rows.
One application in which antifuses have been used is as nonvolatile programmable memory elements to store logic states which would be used in DRAMs for row and column redundancy implementation. An antifuse is, by definition, a device which functions as an open circuit until programmed to be a permanent short circuit. Antifuses for redundancy implementation are usually constructed in the same manner as the memory cell capacitors in the DRAM array.
In contemporary memory products, banks of antifuse elements are typically provided, and one such bank is illustrated in FIG. 1. Each such bank includes a plurality, n, of antifuse elements AF.sub.0, AF.sub.1, . . . AF.sub.n, the top plates of which are joined in a common connection to the programming voltage CGND. The bottom plate of each antifuse element AF.sub.i is connected to the drain of a protection transistor PT.sub.i. The source of each protection transistor PT.sub.i is connected to the drain of selection transistor ST.sub.i, and the sources of the selection transistors ST.sub.i are joined in a common connection to ground. The function of each protection transistor PT.sub.i is to protect the selection transistor from breakdown between its N + region and gate when the high programming voltage is applied to the drain. The gate of each selection transistor ST.sub.i is respectively connected to the outputs of NOR gate NG.sub.i, the inputs of which are the signal PGM* and the selection signals A.sub.i *. The selection signals A.sub.i * are the complements of the signals A.sub.i and may correspond to the address of a row in the memory product which is to be repaired.
A particular antifuse element, e.g. AF.sub.i, is selected for programming when A.sub.i * and PGM* are both zero volts. In this condition the output of NG.sub.i is approximately +5 volts which turns on the selection transistor ST.sub.i to which it is connected. When this selection occurs, a path exists between the bottom plate of the selected antifuse device and ground. Hence, the selected antifuse device AF.sub.i sees a large voltage CGND, e.g. 9 to 12 volts, between its top and bottom plates, which is a sufficient voltage to program the antifuse element. When two or more antifuse elements are to be programmed, the same voltage CGND is applied in parallel to the antifuse elements to be programmed.
Several shortcomings exist in utilizing the programming technique for antifuse elements such as shown in FIG. 1. First, programming of the antifuse elements is slow using the technique shown in FIG. 1, because each antifuse element has to be programmed one at a time. This is due to the fact that each antifuse element needs a minimum amount of current and voltage to program correctly. If two antifuse elements are enabled for programming at the same time, one most assuredly will breakdown (i.e., become programmed) before the other. The programmed antifuse thus creates a path to ground for the current from CGND, which may impact the voltage and current needed for programming of the other antifuse element. In other words, the voltage across the slower-to-program antifuse element may be reduced to a level that no programming of this element is realized. Additionally, the problem may become acute when one attempts to program three or four antifuse elements in such a bank at once. Accordingly, the prior art solution to these problems was to program the antifuse elements in a bank one at a time, which results in the speed of redundancy repair of a memory product being reduced.
Once programming of antifuse elements is completed, it is important that the user verify that those elements which are to be programmed are in fact programmed. Also, it is important that the user verify that antifuse elements which are not to be programmed are functioning properly. In the latter regard, unprogrammed antifuse devices may leak and appear to be programmed devices. No such verification circuitry has heretofore been available.